package cn.edu.qzuie.artist.module.td.service.work;

import java.util.*;
import javax.validation.*;
import cn.edu.qzuie.artist.module.td.controller.admin.work.vo.*;
import cn.edu.qzuie.artist.module.td.dal.dataobject.work.WorkDO;
import cn.edu.qzuie.artist.framework.common.pojo.PageResult;
import cn.edu.qzuie.artist.framework.common.pojo.PageParam;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 作品 Service 接口
 *
 * @author 泉信管理员
 */
public interface WorkService extends IService<WorkDO> {

    /**
     * 创建作品
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createWork(@Valid WorkSaveReqVO createReqVO);

    /**
     * 更新作品
     *
     * @param updateReqVO 更新信息
     */
    void updateWork(@Valid WorkSaveReqVO updateReqVO);

    /**
     * 删除作品
     *
     * @param id 编号
     */
    void deleteWork(Long id);

    /**
     * 获得作品
     *
     * @param id 编号
     * @return 作品
     */
    //WorkDO getWork(Long id);
    /**
     * 获得作品
     *
     * @param id 编号
     * @return 作品
     */
    WorkRespVO getWorks(Long id);
    /**
     * 获得作品
     *
     * @param id 编号
     * @return 作品
     */
    WorkRespVO getWork(Long id);

    /**
     * 获得作品分页
     *
     * @param pageReqVO 分页查询
     * @return 作品分页
     */
    PageResult<WorkDO> getWorkPage(WorkPageReqVO pageReqVO);

    /**
     * 获得作品多表分页
     * @param pageReqVO
     * @return
     */
    PageResult<WorkMultiplePagesVO> getWorkWithcategoryName(WorkPageReqVO pageReqVO);

    /**
     * 更新作品状态
     * @param published 作品状态
     * @param id //作品id
     */
    void updateWorkPublished(Boolean published, Long id);

    /**
     * 获取作品集与说明
     * @param id
     * @return
     */
    List<WorGetImageRespVO> getImagesWithDescribes(Long id);
}